package com.stylefeng.guns.common.constant.factory;

import com.fasterxml.jackson.databind.JsonNode;
import com.stylefeng.guns.common.persistence.model.Dict;

import java.util.List;

/**
 * 常量生产工厂的接口
 *
 * @author fengshuonan
 * @date 2017-06-14 21:12
 */
public interface IConstantFactory {

    /**
     * 根据用户id获取用户名称
     *
     * @author stylefeng
     * @Date 2017/5/9 23:41
     */
    String getUserNameById(Integer userId);

    /**
     * 根据用户id获取用户账号
     *
     * @author stylefeng
     * @date 2017年5月16日21:55:371
     */
    String getUserAccountById(Integer userId);

    /**
     * 通过角色ids获取角色名称
     */
    String getRoleName(String roleIds);

    /**
     * 通过角色id获取角色名称
     */
    String getSingleRoleName(Integer roleId);


    /**
     * 查询区域 省/市
     * @return
     */
    String getAreaCode(String code);

    /**
     * 通过角色id获取角色英文名称
     */
    String getSingleRoleTip(Integer roleId);

    /**
     * 获取部门名称
     */
    String getDeptName(Integer deptId);

    /**
     * 获取菜单的名称们(多个)
     */
    String getMenuNames(String menuIds);



    /**
     * 获取菜单名称
     */
    String getMenuName(Long menuId);

    /**
     * 获取菜单名称通过编号
     */
    String getMenuNameByCode(String code);

    /**
     * 获取字典名称
     */
    String getDictName(Integer dictId);

    /**
     * 获取通知标题
     */
    String getNoticeTitle(Integer dictId);

    /**
     * 根据字典ID获取字典名称
     */
    String getDictNameByCode(Integer code);

    /**
     * 根据字典名称获取字典代码
     */
    Integer getDictIDByName(Integer pid,String name);
    
    /**
     * 查询类型ID查询字典子项
     */
    List<Dict> findDictByPID(Integer pid);

    /**
     * 单个字典查询
     */
    Dict findSingelDict(Integer id);

    /**
     * 获取被缓存的对象(用户删除业务)
     */
    String getCacheObject(String para);

    /**
     * 获取子部门id
     */
    List<Integer> getSubDeptId(Integer deptid);

    /**
     * 获取所有父部门id
     */
    List<Integer> getParentDeptIds(Integer deptid);

    /**
     * 通过dict id获取tips
     * @param id
     * @return
     */
    String findDictTips(Integer id);

    /**
     * 通过dict id获取tips 返回jsonnode
     * @param id
     * @return
     */
    JsonNode findDictTipsNode(Integer id);

    }
